'''

1、	这两个参数是什么意思：*args，**kwargs？我们为什么要使用它们？
*args:元组不定长参数，值是元组类型
**kwargs：字典不成长参数，值是字典类型
用在不确定传的实参的长度时，

2、	下面代码会输出什么？（先自己想，然后再实验，最后查百度）
def f(x, l=[]):
    for i in range(x):
        l.append(i * i)
    print(l)


f(2)
f(3, [3, 2, 1])
f(3)

输出结果为：
[0, 1]
[3, 2, 1, 0, 1, 4]
[0, 1, 0, 1, 4]

原因：一个函数参数的默认值，仅仅在该函数定义的时候，被赋值一次。以后调用时，
如果传入了参数，则用传入的参数；如果未传入参数，则去默认值的地址查找值并使用。
如果想要让f(3)的值是 [0, 1, 4]，那每次执行完都要清空列表，l.clear()
f(2) 时，没有给 l 传参，所以 l 取赋值 []，再追加0，1。默认值的地址不变，默认值变成了 [0, 1]。
f(3,[3,2,1]) 时，给 l 传参 [3,2,1]，则 l 取[3,2,1]，再追加0，1，4。默认值的地址变了。
f(3) 时，没有给 l 传参，所以 l 取默认值 [0, 1]，再追加0，1，4。默认值的地址不变，默认值变成了[0, 1, 0, 1, 4]。
f(4) 时，没有给 l 传参，所以 l 取默认值 [0, 1, 0, 1, 4]，再追加0，1，4，9。默认值的地址不变，默认值变成了[0, 1, 0, 1, 4, 0, 1, 4, 9]。


3、	如何在一个函数内部修改全局变量
在函数内部定义一个跟全局变量同名的局部变量，并用global声明成全局变量使用

4、	用lambda函数实现两个数相乘
m = int(input('请输入被乘数：'))
n = int(input('请输入被乘数：'))


def Use(x, y):
    return lambda x, y: x * y


t = Use(m, n)
print(t(m, n))


5、	列表推导式求列表所有奇数并构造新列表，a =  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
my_list = [i for i in a if i % 2 ==1]
print(my_list)
'''

'''
学生信息管理系统：
还没领悟到呢，不会做
'''